﻿layui
		.use(
				[ 'form', 'layer', 'jquery', 'laypage', 'table' ],
				function() {
					var form = layui.form, table = layui.table, layer = parent.layer === undefined ? layui.layer
							: parent.layer, laypage = layui.laypage, $ = layui.jquery;

					// 数据表格
					table.render({
						id : 'activityList',
						elem : '#activityList',
						url : ctx + '/activity/getActivityList' // 数据接口
						,
						cellMinWidth : 80,
						limit : 10// 每页默认数
						,
						limits : [ 10, 20, 30, 40 ],
						cols : [ [ // 表头
						{
							field : 'activity_id',
							title : '活动ID',
							sort : true,
							align : 'center',
							width : 120
						}, {
							field : 'product_name',
							title : '商品名称',
							align : 'center'
						}, {
							field : 'session_name',
							title : '活动场次',
							align : 'center'
						},  {
							title : '操作',
							toolbar : '#barEdit',
							align : 'center'
						} ] ],
						page : true
						,
						 done : function(res, curr, count) {
						        merge(res);
						 }
					// 开启分页
					});

					// 监听工具条
					table.on('tool(activityList)', function(obj) {
						var data = obj.data;
						if (obj.event === 'del') {
							if (data.roleName == '超级管理员') {
								layer.msg("不允许操作此角色！", {
									icon : 5
								});
								return;
							}
							layer.confirm('真的删除行么', function(index) {
								$.ajax({
									url : ctx
											+ '/activity/deleteActivityById/?activity_id='
											+ data.activity_id,
									type : "get",
									success : function(d) {
										if (d.code == 0) {
											// obj.del();
											table.reload('activityList', {})
										} else {
											layer.msg("权限不足，联系超管！", {
												icon : 5
											});
										}
									}
								})
								layer.close(index);
							});
						} else if (obj.event === 'edit') {
							layer.open({
								type : 2,
								title : "编辑产品",
								area : [ '1000px', '500px' ],
								content : ctx + "/activity/editActivity/"
										+ data.activity_id,
							})
						}
					});
					$(".search_btn").click(function() {
						var type = $(this).data('type');
						active[type] ? active[type].call(this) : '';
					})
					active = {
						search : function() {
							var product_name = $('#product_name');
							var session_name = $('#session_name');

							table.reload('activityList', {
								page : {
									curr : 1
								},
								where : {
									product_name : product_name.val(),
									session_name : session_name.val(),
								}
							});
						}
					};

					// 添加角色
					$(".activityAdd_btn").click(function() {
						var index = layui.layer.open({
							title : "添加产品活动商品",
							type : 2,
							content : ctx + "/activity/addActivity",
							area : [ '600px', '600px' ]
						})
						// 改变窗口大小时，重置弹窗的高度，防止超出可视区域（如F12调出debug的操作）
						$(window).resize(function() {
							layui.layer.full(index);
						})
					})
function merge(res) {
                var data = res.data;
                var mergeIndex = 0; //需要进行合并的初始行数
                var nextMergeIndex = 1; //进行比较的那一行
                var mark = 1; //mark是计算每次需要合并的格子数
                var flag = true;//每一次重新开始比较的标识
                var columsName = ['session_name'];//需要合并的列名称
                var columsIndex = [2];//需要合并的列索引值
                var trArr = $(".layui-table-body>.layui-table").find("tr"); //所有行
                do {
                    var markFlag = true;//是否进行判断合并
                    do {//循环判断是否可以合并，只有不能合并时才跳出
                        for (var k = 0; k < columsName.length; k++) {
                            if (data[mergeIndex][columsName[k]] === data[nextMergeIndex][columsName[k]]) { //后一行的值与前一行的值做比较，相同就需要合并
                                markFlag = true;
                            } else {
                                markFlag = false;
                                break;
                            }
                        }
                        if (markFlag) {
                            mark += 1;//需要覆盖的行数加1
                            nextMergeIndex += 1;//比较的行数加1
                            //判断是否到最后一条数据
                            if (nextMergeIndex >= data.length) {
                                markFlag = false;
                            } else {
                                markFlag = true;
                            }
                        }
                    } while (markFlag);
                    if (mark > 1){//只有存在合并操作时才合并
                        for (var j = 0; j < columsIndex.length; j++) { //这里循环所有要合并的列
                            var tdPreArr = trArr.eq(mergeIndex).find("td").eq(columsIndex[j]); //获取默认行的列
                            tdPreArr.each(function () { //相同列的第一列增加rowspan属性
                                $(this).attr("rowspan", mark);//合并等于 mark 数值的行
                            });
                            //存在多条要隐藏的行单元格，每条都要隐藏
                            for (var x = mergeIndex+1; x < nextMergeIndex; x++) { //这里循环所有要隐藏的列
                                var tdCurArr = trArr.eq(x).find("td").eq(columsIndex[j]); //获取下一行的当前列
                                tdCurArr.each(function () { //当前行隐藏
                                    $(this).css("display", "none");
                                });
                            }
                        }
                    }
                    mergeIndex = nextMergeIndex;
                    mark = 1;
                    nextMergeIndex += 1;
                    if (nextMergeIndex <= data.length) {
                        flag = true;
                    } else {
                        flag = false;
                    }
                } while (flag);
            }
				})
